#include <vcf/third_party/gtest/gtest.h>
#include <vcf/core/memory/ref_count.h>

#include <vcf/core/observer_list_threadsafe.h>
#include <vcf/core/callback/bind.h>
#include <vcf/core/callback/cancelable_callback.h>
#include <vcf/core/file/platform_file.h>
#include <vcf/core/file/platform_file_path.h>
#include <vcf/core/containers/btree.h>
#include <Vcf/crypto/base64.h>
#include <vcf/functional/command.h>
#include <vcf/authority/user.h>
#include <vcf/authority/user_db_holder.h>


#pragma comment(lib,"gtestd.lib")
#pragma comment(lib,"vcf.lib")
#pragma warning(disable:4800)



void PrintCommand(Vcf::functional::Command command)
{
	std::cout<<"command : " 
			 <<command.GetShortName()<< " "
			 <<command.GetFullName()<< " "
			 <<command.GetDescription()<< " "
			 <<std::endl;

}
#include <xtree>
#include <iterator>
#include <list>


#include "password_generator/password_generator.h"


GTEST_API_ int main(int argc, char **argv) 
{  
	KeenSafe::PasswordGenerator gen(15,KeenSafe::kPasswordCharsetWithoutSpecial);
	std::cout<<gen.generate()<<std::endl;
	Vcf::Authority::UserDbHolder dbh;
	std::cout<<sizeof(Vcf::Db::DbTime)<<std::endl;
	std::cout<<sizeof(Vcf::Time)<<std::endl;
	Vcf::Db::DbTime tmp(Vcf::Time::Now().ToTimeT());
	std::cout<<tmp.AsString()<<std::endl;

	Vcf::PlatformFilePath path_(L"C:\\1.txt");
	Vcf::PlatformFile file_(path_,Vcf::PlatformFile::kFlagOpen);
	file_.exists();
	system("pause");

	std::cout << "Running main() from main.cpp\n";  

	testing::InitGoogleTest(&argc, argv);  
	auto a = RUN_ALL_TESTS();  
	system("pause");


	//Vcf::functional::Command command("list","ls","list all files");
	////Vcf::Callback<void(void)> close = 
	//command.Bind(Vcf::Bind(&PrintCommand,command));
	//command.Run();
	//system("pause");

}  
